﻿/*
 * Created by SharpDevelop.
 * User: Usuario
 * Date: 06/11/2011
 * Time: 06:18 p.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using Business_Entity;
using System.Data.SqlClient;
using System.Data;
using System.Collections.Generic;

namespace DAOFactory
{
	/// <summary>
	/// Description of DAOProductoTienda.
	/// </summary>
	public class DAOProductoTienda
	{
		public DAOProductoTienda()
		{
		}
		
		public List<BEProductoTienda> getTiendaPorProducto(int codProd){
			String cmdSQL;
			int codProducto, codTienda, stock;
			List<BEProductoTienda> lista;
			cmdSQL = "SELECT P.*, T.NOMBRE FROM PRODUCTOXTIENDA P, TIENDA T WHERE IDPRODUCTO="+ codProd + " AND P.IDTIENDA=T.IDTIENDA;";
			SqlCommand command =  new SqlCommand(cmdSQL, ConnectionManager.getConnection());
			SqlDataReader res = command.ExecuteReader();
			
			lista = new List<BEProductoTienda>();
			while(res.Read()){
				codProducto = Int32.Parse(res[0].ToString());
				codTienda = Int32.Parse(res[1].ToString());
				stock = Int32.Parse(res[2].ToString());
				String nom = res[3].ToString();
				BEProductoTienda tip = new BEProductoTienda(codProducto, codTienda);
				tip.StockActual = stock;
				tip.NombreTienda = nom;
				lista.Add(tip);
			}
			res.Close();
			return lista;			
		}
		
		//FIORELLA
		public List<BEProductoTienda> buscaProdTiendaReporteFiorella(List<BETienda> tienda, List<BEProducto> prod){
			//Si codTienda = -1 entonces busca todo, si codProd = -1 entonces busca todo
			String cmdSQL = "SELECT P.*, T.NOMBRE FROM PRODUCTOXTIENDA P, TIENDA T WHERE T.IDTIENDA=P.IDTIENDA";
			SqlCommand command = null;
			SqlDataReader res = null;
			List<BEProductoTienda> lista = new List<BEProductoTienda>();
			
			if(tienda.Count!=0){
				cmdSQL = cmdSQL + " AND P.IDTIENDA IN (" + tienda[0].Id;
				for (int i = 1; i < tienda.Count; i++) {
					cmdSQL = cmdSQL + ", " + tienda[i].Id;
				}
				cmdSQL = cmdSQL + ")";
			}
			if(prod.Count!=0){
				cmdSQL = cmdSQL + " AND P.IDPRODUCTO IN (" + prod[0].Codigo;
				for (int i = 1; i < prod.Count; i++) {
					cmdSQL = cmdSQL + ", " + prod[i].Codigo;
				}
				cmdSQL = cmdSQL + ")";
			}
			
			cmdSQL = cmdSQL +  " ORDER BY P.IDTIENDA, P.IDPRODUCTO;";
			try{
				command =  new SqlCommand(cmdSQL, ConnectionManager.getConnection());
				res = command.ExecuteReader();
				BEProductoTienda pTienda;
				while (res.Read()) {
					int cProducto = Int32.Parse(res[0].ToString());
					int cTienda = Int32.Parse(res[1].ToString());
					int stock = Int32.Parse(res[2].ToString());
					String nom = res[3].ToString();
					pTienda = new BEProductoTienda(cProducto, cTienda);
					pTienda.StockActual = stock;
					pTienda.NombreTienda = nom;
					lista.Add(pTienda);
				}
				res.Close();
			}
			catch{
			}
			return lista;
		}
		
		public int getStockActual(int codTienda, int codProd){
			try{
				String cmdSQL = "SELECT STOCKACTUAL FROM PRODUCTOXTIENDA WHERE IDTIENDA=" + codTienda + " AND IDPRODUCTO=" + codProd + ";";
				SqlCommand command = new SqlCommand(cmdSQL, ConnectionManager.getConnection());
				SqlDataReader res = command.ExecuteReader();
				int cant = 0;
				while(res.Read()){
					cant = Int32.Parse(res[0].ToString());					
				}
				res.Close();
				return cant;
			}
			catch{
				return 0;
			}
		}
		
		public int actualizaStock(int nuevoStock, int codTienda, int codProd){
			try
            {
                String cmdSQL = "UPDATE PRODUCTOXTIENDA SET STOCKACTUAL=" + nuevoStock + " WHERE IDPRODUCTO=" + codProd + " AND IDTIENDA=" + codTienda + ";";
                SqlCommand command = new SqlCommand(cmdSQL, ConnectionManager.getConnection());
                command.ExecuteNonQuery();
                return 1;//se elimino correctamente
            }
            catch {
                return 0;//no se puedo eliminar por algun error
            }
		}
		
		public int addProductoTienda(int codTienda, int codProd, int cant){
			try
            {
                String cmdSQL = "INSERT INTO PRODUCTOXTIENDA(IDPRODUCTO, IDTIENDA, STOCKACTUAL) VALUES (" + codProd + ", " + codTienda + ", " + cant + ");";
                SqlCommand command = new SqlCommand(cmdSQL, ConnectionManager.getConnection());
                command.ExecuteNonQuery();
                return 1;//se elimino correctamente
            }
            catch {
                return 0;//no se puedo eliminar por algun error
            }
		}
		
		public int verificaExistenciaProductoTienda(int codTienda, int codProd){
			String cmdSQL = "SELECT COUNT(*) FROM PRODUCTOXTIENDA WHERE IDTIENDA=" + codTienda + " AND IDPRODUCTO=" + codProd + ";";
			SqlCommand command = null;
			SqlDataReader res = null;
			try{
				command =  new SqlCommand(cmdSQL, ConnectionManager.getConnection());
				res = command.ExecuteReader();
				int aux=0;
				while(res.Read()){
					try{
						aux = Int32.Parse(res[0].ToString());
					}
					catch{
						aux = 0;
					}
				}			
				res.Close();
				return aux;
			}
			catch{
				res.Close();
				return 0;
			}
		}
	}
}
